home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / ADDON.PAK / VIEWTEST.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  295 lines

  1. /*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2.  
  3.   viewtest.cpp
  4.   Created: 10/24/95
  5.   Copyright (c) 1995, Borland International
  6.   $Revision:   1.18  $
  7.  
  8. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
  9. #ifndef __AOEXPCH_H
  10.   #include "aoexpch.h"
  11. #endif
  12. #pragma hdrstop
  13.  
  14. #include <ideaddon\iproj.h>
  15.  
  16. #include "viewtest.h"
  17. #include "prjview.h"
  18. #include "textview.h"
  19. #include "msgview.h"
  20. #include "pdview.h"
  21. #include "propview.h"
  22. #include "prjwin.h"
  23. #include "pdwin.h"
  24.  
  25. /******************************************************************************
  26. *
  27. * This example demonstrates how to create views that belong to different regions
  28. *
  29. ******************************************************************************/
  30.  
  31. static IViewType* g_projectViewType;
  32. static IViewType* g_textViewType;
  33. static IViewType* g_projectDetailViewType;
  34. static IViewType* g_MonitorViewType;
  35. static IViewType* g_propertyViewType;
  36.  
  37. //
  38. // NOTE: The regions that have been set in the examples is overridden by
  39. //       the script code. Read ssinit.spp for detail
  40. //
  41. ViewTest::ViewTest() 
  42. {
  43.   //
  44.   // Create IViewType and register IUserViewFactory. This must be done
  45.   // during startup.
  46.   //
  47.   
  48.   //
  49.   // Create project view factory
  50.   //
  51.   g_projectViewType = ::CreateViewType();
  52.   if (g_projectViewType == NULL) {
  53.     return;
  54.   }
  55.   //
  56.   // add ref before passed as argument
  57.   //
  58.   g_projectViewType->AddRef();
  59.   new ProjectViewFactory(g_projectViewType);
  60.  
  61.   //
  62.   // Create text view factory
  63.   //
  64.   g_textViewType = ::CreateViewType();
  65.   if (g_textViewType == NULL) {
  66.     return;
  67.   }
  68.  
  69.   //
  70.   // Initialize view type diffreently here. This is a less preferred way to do it
  71.   //
  72.   IPolyString* viewType = MakePolyString("AddOnTextView");
  73.  
  74.   //
  75.   // Editor region set in startup.spp
  76.   //
  77.   g_textViewType->Init(new TextViewFactory, viewType, 0, 0, 813, 358);
  78.  
  79.   //
  80.   // Create project detail view factory
  81.   //
  82.   g_projectDetailViewType = ::CreateViewType();
  83.   if (g_projectDetailViewType == NULL) {
  84.     return;
  85.   }
  86.   //
  87.   // add ref before passed as argument
  88.   //
  89.   g_projectDetailViewType->AddRef();
  90.   new ProjectDetailViewFactory(g_projectDetailViewType);
  91.  
  92.   //
  93.   // Create Monitor view factory
  94.   //
  95.   g_MonitorViewType = ::CreateViewType();
  96.   if (g_MonitorViewType == NULL) {
  97.     return;
  98.   }
  99.   //
  100.   // add ref before passed as argument
  101.   //
  102.   g_MonitorViewType->AddRef();
  103.   new MonitorViewFactory(g_MonitorViewType);
  104.   //
  105.   // Create Property view factory
  106.   //
  107.   g_propertyViewType = ::CreateViewType();
  108.   if (g_propertyViewType == NULL) {
  109.     return;
  110.   }
  111.   //
  112.   // add ref before passed as argument
  113.   //
  114.   g_propertyViewType->AddRef();
  115.   new PropertyViewFactory(g_propertyViewType);
  116.  
  117. }
  118.  
  119. //.............................................................................
  120. ViewTest::~ViewTest()
  121. {
  122.    if ( g_projectViewType ) {
  123.       g_projectViewType->Release();
  124.       g_projectViewType = NULL;
  125.    }
  126.    if ( g_textViewType ) {
  127.       g_textViewType->Release();
  128.       g_textViewType = NULL;
  129.    }
  130.    if ( g_projectDetailViewType ) {
  131.       g_projectDetailViewType->Release();
  132.       g_projectDetailViewType = NULL;
  133.    }
  134.    if ( g_MonitorViewType ) {
  135.       g_MonitorViewType->Release();
  136.       g_MonitorViewType = NULL;
  137.    }
  138.    if ( g_propertyViewType ) {
  139.       g_propertyViewType->Release();
  140.       g_propertyViewType = NULL;
  141.    }
  142.  
  143. }
  144. //.............................................................................
  145. BOOL ViewTest::Init()
  146. {
  147.   return TRUE;
  148. }
  149. //.............................................................................
  150. void ViewTest::UnInit()
  151. {
  152. }
  153. //.............................................................................
  154. const char * ViewTest::GetName()
  155. {
  156.   return "View mgmt test";
  157. }
  158. //.............................................................................
  159. const char * ViewTest::GetTestDescription( int testNum )
  160. {
  161.   switch ( testNum ) {
  162.     case 1:
  163.       return "Create project view";
  164.     case 2:
  165.       return "Create edit view";
  166.     case 3:
  167.       return "Create project detail view";
  168.     case 4:
  169.       return "Create Monitor view";
  170.   }
  171.   return "This test not implemented";
  172.  
  173. void ViewTest::DoTest1()
  174. {
  175.   //
  176.   // call IViewType::CreateInstance() to create a user view in IDE
  177.   //
  178.   IPolyString* title = MakePolyString("Addon Project View");
  179.   IViewParentWnd* pvp = g_projectViewType->CreateInstance(title);
  180.   if (pvp) {
  181.     pvp->Display();
  182.     pvp->Release();
  183.   }
  184. }
  185.  
  186. void ViewTest::DoTest2()
  187. {
  188.   //
  189.   // call IViewType::CreateInstance() to create a user view in IDE
  190.   //
  191.   IPolyString* title = MakePolyString("Addon Text View");
  192.   IViewParentWnd* pvp = g_textViewType->CreateInstance(title);
  193.   if (pvp) {
  194.     pvp->Display();
  195.     pvp->Release();
  196.   }
  197.  
  198.   title = MakePolyString("Addon Property View");
  199.   pvp = g_propertyViewType->CreateInstance(title);
  200.   if (pvp) {
  201.     pvp->Display();
  202.     pvp->Release();
  203.   }
  204.  
  205. }
  206.  
  207. void ViewTest::DoTest3()
  208. {
  209.   //
  210.   // call IViewType::CreateInstance() to create a user view in IDE
  211.   //
  212.   IPolyString* title = MakePolyString("Addon Project Detail View");
  213.   IViewParentWnd* pvp = g_projectDetailViewType->CreateInstance(title);
  214.   if (pvp) {
  215.    pvp->Display();
  216.    IViewClient* vClient = pvp->GetViewClient();
  217.    ProjectDetailView* mv = GetProjectDetailViewFromHWND(vClient->GetHwnd());
  218.    mv->ShowSelectedNodes();
  219.    vClient->Release();
  220.    pvp->Release();
  221.   }
  222. }
  223.  
  224. void ViewTest::DoTest4()
  225. {
  226.   //
  227.   // call IViewType::CreateInstance() to create a user view in IDE
  228.   //
  229.   IPolyString* title = MakePolyString("Addon Monitor View");
  230.   IViewParentWnd* pvp = g_MonitorViewType->CreateInstance(title);
  231.   if (pvp) {
  232.    pvp->Display();
  233.    pvp->Release();
  234.   }
  235. }
  236.  
  237. //.............................................................................
  238. void ViewTest::DoTest( int testNum )
  239. {
  240.   switch ( testNum ) {
  241.     case 1: {
  242.       DoTest1();
  243.       break;
  244.     }
  245.     case 2:
  246.       DoTest2();
  247.       break;
  248.     case 3:
  249.       DoTest3();
  250.       break;
  251.     case 4:
  252.       DoTest4();
  253.       break;
  254.     default: {
  255.       OutStr( FormatStr( "Test #%d Not Implemented!", testNum ) );
  256.       break;
  257.     }
  258.   }
  259. }
  260.  
  261. //
  262. // create a addon project view and set the top node 
  263. //
  264. void  CreateNewProjectView(ProjectNode node) {
  265.  
  266.   IPolyString* title = MakePolyString("Addon Project View");
  267.   IViewParentWnd* pvp = g_projectViewType->CreateInstance(title);
  268.   if (pvp) {
  269.    pvp->Display();
  270.  
  271.    IViewClient* vClient = pvp->GetViewClient();
  272.    TreeModel* tm = GetTreeModelFromHWND(vClient->GetHwnd());
  273.    tm->SetTopNode(node);
  274.    vClient->Release();
  275.    pvp->Release();
  276.   }
  277. }
  278.  
  279. void  CreateDetailView(ProjectNode* nodes, int nNodes) {
  280.  
  281.   IPolyString* title = MakePolyString("Addon Project Detail View");
  282.   IViewParentWnd* pvp = g_projectDetailViewType->CreateInstance(title);
  283.   if (pvp) {
  284.     pvp->Display();
  285.  
  286.     IViewClient* vClient = pvp->GetViewClient();
  287.     ProjectDetailView* mv = GetProjectDetailViewFromHWND(vClient->GetHwnd());
  288.     mv->ShowNodes(nodes, nNodes);
  289.     vClient->Release();
  290.  
  291.     pvp->Release();
  292.   }
  293. }
  294.